import java.util.Scanner;
class Main {
        public static final String RESET= "\u001B[0m";
        public static final String GREEN= "\u001B[32m";
        public static final String YELLOW= "\u001B[33m";
        public static final String BLUE= "\u001B[34m";
        public static final String VIOLET= "\u001B[35m";
        public static final String CYAN= "\u001B[36m";
        public static final String RED= "\u001B[31m";
    public static void main(String[]args){
        System.out.println("Das Spiel heisst Wordle. Man hat 6 Versuche, um ein 5 Buchstaben langes, englisches Wort zu erraten. \nEin Buchstabe der im Wort vorkommt und an der richtigen Stelle ist, ist gruen.\nEin Buchstabe der im Wort vorkommt, aber an der falschen Stelle ist, ist gelb. Und ein Buchstabe, der nicht im Wort vorkommt ist weiss.\nDas Wort muss in Grossbuchstaben angegeben werden.\nEs kommen in den Woertern keine doppelten Buchstaben vor.\nDas Spiel muss in VS Code oder einem aehnlichen Programm ausgefuehrt werden, das auch farbigen Text ausgeben kann.");
        System.out.print("\n \n Die notwendigen Farben funktionieren in Programiz nicht aber es funktioniert in: https://www.online-java.com/ \n");
        Scanner Scanner = new Scanner(System.in);
        int richtig=0;
        int halb=0;
        int sieg=0;
        int Versuche=0;
        int nochmal=1;
        int enden = 0;
        String selbst="";
        String Ausgesucht[]={"","","","",""};
        String Woerter[][] = {
        {"C","H","A","I","R"},
        {"A","D","I","E","U"},
        {"C","H","E","A","P"},
        {"T","A","B","L","E"},
        {"S","T","O","N","E"},
        {"B","R","E","A","D"},
        {"P","L","A","N","T"},
        {"D","R","I","N","K"},
        {"M","O","N","E","Y"},
        {"S","M","A","R","T"},
        {"G","R","A","P","E"},
        {"W","A","T","E","R"},
        {"L","I","G","H","T"},
        {"S","H","A","D","E"},
        {"B","L","A","C","K"},
        {"W","H","I","T","E"},
        {"F","L","O","A","T"},
        {"T","R","U","C","K"},
        {"S","L","E","E","P"},
        {"B","L","O","C","K"},
        {"F","R","E","S","H"},
        {"C","O","A","S","T"},
        {"P","O","U","N","D"},
        {"M","E","T","A","L"},
        {"C","R","O","W","N"},
        {"H","O","U","S","E"},
        {"F","I","E","L","D"},
        {"J","U","I","C","E"},
        {"P","R","I","D","E"},
        {"S","O","U","N","D"}};
        while(nochmal==1){
            String Wordle[][]={
        {"--","--","--","--","--"},
        {"/ ","/ ","/ ","/ ","/ "},
        {"--","--","--","--","--"},
        {"/ ","/ ","/ ","/ ","/ "},
        {"--","--","--","--","--"},
        {"/ ","/ ","/ ","/ ","/ "},
        {"--","--","--","--","--"},
        {"/ ","/ ","/ ","/ ","/ "},
        {"--","--","--","--","--"},
        {"/ ","/ ","/ ","/ ","/ "},
        {"--","--","--","--","--"},
        {"/ ","/ ","/ ","/ ","/ "},
        {"--","--","--","--","--"}
        };
            enden = 0;
            int eins= (int)(Math.random() *20);
            Versuche=0;
        for(int i = 0; i < 5 ; i++){
            Ausgesucht[i]=Woerter[eins][i] + " ";
            //System.out.print(Ausgesucht[i]); //Für Lösung vor dem Spiel entkommentieren
        }
        System.out.print("Soll das Wort zufällig oder von einer Person bei dir ausgewählt werden? Zufällig = 0; Mensch = 1");
        if(1==Scanner.nextInt()){
            System.out.print("Gib das eigene Wort an");
            selbst = Scanner.nextLine();
             while(selbst.length()!=5){
                selbst = Scanner.nextLine();}
            for(int i = 0; i < 5 ; i++){
                Ausgesucht[i] = String.valueOf(selbst.charAt(i)) + " ";
            }
            for(int i = 0; i < 11 ; i++){
                System.out.println("\n");
            }
        }
        System.out.print("\n");
        for(int q = 1; q < 12; q += 2){
            System.out.print("Gib hier ein Wort an: ");
            String Eingabe = Scanner.nextLine();
            while(Eingabe.length()!=5){
                Eingabe = Scanner.nextLine();
            }
            
            Versuche++;
            for(int z = 0; z < 5; z++){  
                Wordle[q][z] = String.valueOf(Eingabe.charAt(z)) + " ";
            }

            for(int i = 0; i < 13 ; i++){
                sieg=0;
            for(int j = 0; j < 5 ; j++){
                richtig=0;
                halb=0;
                for(int w = 0; w < 5; w++){
                    if(Wordle[i][j].equals(Ausgesucht[w])&&w==j){
                        richtig=1;
                    }
                    if(Wordle[i][j].equals(Ausgesucht[w])&&w!=j){
                        halb=1;
                    }
                    
                }
                if(richtig==1){
                    System.out.print(GREEN + Wordle[i][j] + RESET );
                    sieg++;
                }
                else if(halb==1){
                    System.out.print(YELLOW + Wordle[i][j] + RESET );
                }
                else{
                    System.out.print(Wordle[i][j]);
                }
                if ( sieg == 5){
                    enden = 1;
                }
            }
                System.out.print("\n");
            }
            System.out.print("\n");
            if(enden == 1){
                System.out.print(RED + "D" + BLUE +"u " + YELLOW + "h" + VIOLET +"a" + GREEN + "s" + CYAN + "t " + RED +  "g" + BLUE + "e" + YELLOW + "w" + VIOLET + "o" + GREEN + "n" + CYAN + "n" + RED + "e" + BLUE + "n" + YELLOW + "!" + RESET);
                System.out.print("\nDu hast " + Versuche + " Versuche benötigt. Willst du nochmal spielen? Ja (1) oder Nein (0)");
                nochmal=Scanner.nextInt();
                break;
            }
            if (Versuche == 6){
                System.out.print("Du hast es nicht geschafft. Das Wort war: ");
                for(int i = 0; i < 5 ; i++){
                    System.out.print(Woerter[eins][i]);
                }
                System.out.print(" Willst du nochmal spielen? Ja (1) oder Nein (0)");
                nochmal=Scanner.nextInt();
                break;
            }

        }
        }
}}
